package com.example.helloworld.mq.service;

import com.example.helloworld.mq.constant.AmqpConstants;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
import java.util.Date;

@Component
public class DelayedMessageProducer {

    @Autowired
    private RabbitTemplate rabbitTemplate;

    /**
     * 发送延迟消息
     * @param message 消息内容
     * @param delayTime 延迟时间（毫秒）
     */
    public void sendDelayedMessage(String message, long delayTime) {
        // 打印发送时间
        String sendTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
        System.out.println("发送消息：" + message + "，发送时间：" + sendTime + "，延迟时间：" + delayTime + "ms");

        // 发送消息时，通过 headers 指定延迟时间（x-delay 为插件约定的延迟参数）
        rabbitTemplate.convertAndSend(
                AmqpConstants.DELAYED_EXCHANGE_NAME,
                AmqpConstants.DELAYED_ROUTING_KEY,
                message,
                msg -> {
                    msg.getMessageProperties().setHeader("x-delay", delayTime);
                    return msg;
                }
        );
    }
}
